Systems and methods for virtual keyboards for high dimensional controllers

ABSTRACT

Systems and methods for using virtual keyboards for high dimensional controllers in accordance with embodiments of the invention are illustrated. One embodiment includes a virtual keyboard system including a processor, and a memory, including a virtual keyboard application, where the virtual keyboard application directs the processor to display a plurality of 3D keys in a virtual environment, where each 3D key represents at least one symbol via a display device, display a cursor in the virtual environment, where the cursor is movable in at least three dimensions via the display device, obtain a user input data from an input device, move the cursor to a 3D key in the plurality of 3D keys based on the user input data, and record the at least one symbol represented by the 3D key.

CROSS-REFERENCE TO RELATED APPLICATIONS

The current application claims the benefit of and priority under 35 U.S.C. § 119(e) to U.S. Provisional Patent Application No. 62/752,280 entitled “Systems and Methods for Virtual Keyboards for High Dimensional Controllers” filed Oct. 29, 2018. The disclosure of U.S. Provisional Patent Application No. 62/752,280 is hereby incorporated by reference in its entirety for all purposes.

STATEMENT OF FEDERALLY SPONSORED RESEARCH

This invention was made with Government support under contract W911NF-14-2-0013 awarded by the Defense Advanced Research Projects Agency and under contract DC014034 awarded by the National Institutes of Health. The Government has certain rights in the invention.

FIELD OF THE INVENTION

The present invention generally relates to virtual keyboards for high dimensional controllers and, more specifically, enhanced methods for constructing virtual keyboards to increase usage efficiency.

BACKGROUND

The invention of the typewriter revolutionized the written word. Perhaps the most recognizable keyboard layout is the QWERTY layout found today on the majority of modern computing systems has been used since the late 1800s. Keyboards today enable users to interface physically with a computing device by inputting specific symbols that are assigned to each key. Most commonly, by pressing a key, a circuit is completed which causes the input of the symbol assigned to the pressed key into the digital system.

Brain-computer interfaces (BCIs), also known as brain-machine interfaces (BM's), mind-machine interfaces (MMIs), direct neural interfaces (DNIs), or neural-control interfaces (NCIs), read brain signals generated in a user and convert them into machine-usable signals. BCIs can be invasive (having an implanted component) or non-invasive (no implanted components). For example, electroenecephalography (EEG) has been used as a non-invasive BCI, often involving the recording of P300 signals.

SUMMARY OF THE INVENTION

Systems and methods for using virtual keyboards for high dimensional controllers in accordance with embodiments of the invention are illustrated. One embodiment includes a virtual keyboard system including a processor, and a memory, including a virtual keyboard application, where the virtual keyboard application directs the processor to display a plurality of 3D keys in a virtual environment, where each 3D key represents at least one symbol via a display device, display a cursor in the virtual environment, where the cursor is movable in at least three dimensions via the display device, obtain a user input data from an input device, move the cursor to a 3D key in the plurality of 3D keys based on the user input data, and record the at least one symbol represented by the 3D key.

In another embodiment, at least one 3D key in the plurality of 3D keys is segmented into a plurality of regions, and each region represents at least one symbol.

In a further embodiment, the virtual keyboard application further directs the processor to rotate the cursor based on the user input data.

In still another embodiment, the virtual keyboard application further directs the processor to rotate the plurality of 3D keys around a fixed point based on the user input data.

In a still further embodiment, the virtual keyboard application further directs the processor to rotate each key in the plurality of 3D keys around a center point of each respective key based on the user input data.

In yet another embodiment, the plurality of 3D key objects are arranged in a face centered cubic structure.

In a yet further embodiment, the input device is a brain-computer interface, and wherein the user input data includes brain signal data.

In a further additional embodiment, the input device is a motion tracking system.

In another embodiment again, the display device displays a 2D representation of the virtual environment from at least one given viewpoint.

In a further embodiment again, each 3D key is a sphere.

In still yet another embodiment, a method for typing using a virtual keyboard, includes displaying a plurality of 3D keys in a virtual environment via a display device, where each 3D key object represents at least one symbol, displaying a cursor in the virtual environment via the display device, where the cursor is movable in at least three dimensions, obtaining user input data from an input device, moving the cursor to a 3D key in the plurality of 3D key based on the user input data, and recording the at least one symbol represented by the 3D key.

In a still yet further embodiment, at least one 3D key in the plurality of 3D key objects is segmented into a plurality of regions, and each region represents at least one symbol.

In still another additional embodiment, the method further includes rotating the cursor based on the user input data.

In a still further additional embodiment, the method further includes rotating the plurality of 3D keys around a fixed point based on the user input data.

In still another embodiment again, rotating each key in the plurality of 3D keys around a center point of each respective key based on the user input data.

In a still further embodiment again, the plurality of 3D keys are arranged in a face centered cubic structure.

In yet another additional embodiment, the input device is a brain-computer interface, and wherein the user input data includes brain signal data.

In a yet further additional embodiment, the input device is a motion tracking system.

In yet another embodiment again, the display device displays a 2D representation of the virtual environment from at least one given viewpoint.

In a yet further embodiment again, each 3D key is a sphere.

Additional embodiments and features are set forth in part in the description that follows, and in part will become apparent to those skilled in the art upon examination of the specification or may be learned by the practice of the invention. A further understanding of the nature and advantages of the present invention may be realized by reference to the remaining portions of the specification and the drawings, which forms a part of this disclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

The patent or application file contains at least one drawing executed in color. Copies of this patent or patent application publication with color drawing(s) will be provided by the Office upon request and payment of the necessary fee.

The description and claims will be more fully understood with reference to the following figures and data graphs, which are presented as exemplary embodiments of the invention and should not be construed as a complete recitation of the scope of the invention.

FIGS. 1A and 1B illustrate an example virtual keyboard for high dimensional controllers layout with no assigned symbols from different viewpoints in accordance with an embodiment of the invention.

FIGS. 1C and 1D illustrate the example virtual keyboard for high dimensional controllers layout shown in FIGS. 1A and 1B, with an example symbol assignment from different viewpoints in accordance with an embodiment of the invention.

FIGS. 2A and 2B illustrate an example virtual keyboard for high dimensional controllers layout with an example symbol assignment from different viewpoints in accordance with an embodiment of the invention.

FIG. 3 illustrates a conventional virtual keyboard layout implemented using a virtual keyboard for high dimensional controllers system and three different example virtual keyboard for high dimensional controllers layouts in accordance with an embodiment of the invention.

FIG. 4 is a system diagram for a virtual keyboard for high dimensional controllers system in accordance with an embodiment of the invention.

FIG. 5 is a block diagram for a virtual keyboard for high dimensional controllers computing system in accordance with an embodiment of the invention.

FIG. 6 is a flow chart illustrating a process for generating and using a virtual keyboard for high dimensional controllers in accordance with an embodiment of the invention.

DETAILED DESCRIPTION

Increasingly, the ability to interface with machines is becoming a necessity for modern life. However, the predominant methods for interfacing with machines are physical. For example, personal computers utilize keyboards as common interfaces. Increasingly common too are voice based interfaces where audio processing techniques are used to understand and extract verbal commands from users. However, there is a significant portion of the population that is incapable of using physical interfaces, or otherwise prevented from using them efficiently. For example, those suffering from quadriplegia may be unable to use physical keyboards and mice.

Recent advances in interface technology have resulted in interfaces that attempt to compensate for physical disabilities. For example, motion tracking systems, such as, but not limited to, eye tracking and head tracking systems can be useful for those who have difficulty with finger movement. In some cases, motion tracking systems can be supplemented or supplanted by brain-computer interfaces (BCIs). BCIs are capable of recording brain activity and translating the intention of the user into prosthetic movement. For example, when a user thinks of moving a computer cursor to the right, the BCI system can recognize the brain activity patterns that correlate with that intention and trigger the cursor to move in the desired direction. However, while interface technology has changed, the notion of a keyboard has remained largely static. The common typing paradigm for cursor typing using BCIs, eye-tracking, and head-tracking, a cursor is moved over a desired key in a 2D grid (similar to a physical keyboard), and the key is selected by dwelling on the key for a predefined period, or by ‘clicking’ the key with an additional action. However, these conventional methods are much slower and more prone to errors when compared to 10-digit typing using a physical keyboard. Cursor typing can be frustrating and devastating to users when the typing rate is too slow.

A key problem with cursor typing is the control of only ‘1-digit’ (i.e. the single cursor) as opposed to 10 simultaneous digits utilized in physical typing. In contrast, interface devices in accordance with certain embodiments of the invention are capable of translating brain signals into at least three directional dimensions (x, y, z). Further, in many embodiments, a fourth orientation dimension possible. That is, not only can an object be moved along each axis, but the object can have a manipulable orientation in the three dimensional (3D) space (for example, but without limitation, rotation). By increasing the dimensionality of the inputs, a higher information throughput can be achieved. However, in order to achieve the benefit of high-dimensional input, a new keyboard layout and design is useful.

Turning now to the drawings, systems and methods for virtual keyboards for high dimensional controllers are described. Here, “high-dimensional” refers to the capability to provide at least three dimensions of input corresponding to at least three degrees of freedom of movement for usage in selecting keys. In many embodiments, virtual keyboards for high dimensional controllers are made of 3D virtual objects in a three dimensional virtual space. Virtual keyboards for high dimensional controllers can be displayed in at least two dimensions (2D). For example, in some embodiments, virtual keyboards for high dimensional controllers are displayed in 2D by rendering a 2D view of the 3D virtual space corresponding to a user's viewpoint on a particular 2D display device. Therefore, it is to be understood that while key objects and cursors are referred to herein as 3D, they can be displayed as 2D representations from a given viewpoint on a display device. Where conventional virtual keyboards utilize a 2D matrix layout of keys often with two degrees of freedom (movement along x and y axes), systems and methods described herein generate and utilize virtual keyboards for high dimensional controllers that can increase typing speed and reduce input errors.

When attempting to increase efficiency and take advantage of high-dimensional inputs, it can be desirable to reduce the average reach time between keys (i.e. reduce the amount of time the cursor is not selecting a key). Two ways are discussed below in which to reduce average reach time. First, the physical location of the keys can be selected to reduce the amount of space between them. Second, the key labeling (which symbol is assigned to which key) can be made to assign more commonly used keys in closer proximity to each other. Key labeling is often a function of what language is being utilized, and there can be a degree of personal preference involved. However, languages can impact key placement as well.

While virtual keyboards for high dimensional controllers can be used to assist those who are unable to efficiently type physically due to physical disability, virtual keyboards for high dimensional controllers can also be useful in situations where traditional physical keyboards are unavailable or unwieldly. As virtual keyboards for high dimensional controllers can increase typing speed compared to conventional virtual keyboards when physical keyboards cannot be used, virtual keyboards for high dimensional controllers can be utilized to increase user's typing speeds in any number of situations. For example, in video gaming environments where game controllers are the predominant interface device, virtual keyboards for high dimensional controllers can be used to increase input speed. Further, virtual keyboards for high dimensional controllers can be an efficient method of input for virtual reality systems (e.g. where pointers are used connected to a person's hand held controllers), or for television inputs where a television remote (e.g. a “clicker”) is used. Indeed, virtual keyboards for high dimensional controllers can be used in any environment where physical keyboards are unavailable or cumbersome to use. Different constructions of virtual keyboards for high dimensional controllers are discussed below.

Virtual Keyboards for High Dimensional Controllers

In many embodiments, in order to leverage high-dimensional input, keys in virtual keyboards for high dimensional controllers are placed in arrangements that minimize the distance between them in at least three dimensions. Indeed, while it can be useful to densely pack keys, it is often preferable for each key to be visible to the user at all times. To achieve this, virtual keyboards for high dimensional controllers described herein utilize 3D keys in a face-centered cubic lattice, which balances both dense packing and visibility, as the center of each key is visible at least up to three layers. As such, many virtual keyboards for high dimensional controllers described herein are between one and three layers. However, any number of layers can be used based on user preference and/or language as appropriate to the requirements of specific applications of embodiments of the invention. For each number of keys required for the resulting virtual keyboard for high dimensional controllers, the optimal subset of locations of 3D keys in the face centered cubic (FCC) lattice can be selected in order to minimize the average distance between keys. While virtual keyboards for high dimensional controllers are discussed below with respect to having spherical keys, any number of shapes (e.g. tetrahedrons, cubes, pentahedrons, other polyhedrons, irregular 3D objects, etc.) can be used as appropriate to the requirements of specific applications of embodiments of the invention.

Turning now to FIGS. 1A and 1B, a 3D virtual keyboard with 37 keys in accordance with an embodiment of the invention is illustrated. The three colors represent different layers of the keyboard. Notably, there can be space between the keys added to reduce errors, and the absolute densest packing of spheres is not a requirement. The cursor, represented here by a black arrow but which can take any form desired, can be moved through the 3D environment to select particular keys. Turning now to FIGS. 1C and 1D, a 37 key 3D virtual keyboard with English symbol assignments in accordance with an embodiment is illustrated. In numerous embodiments, the number of keys desired for a particular layout may be insufficient to complete a plane of the lattice. It is not a requirement that each key be placed to conform to the lattice (i.e. remainder keys can be placed in non-uniform positions. In this embodiment, each key represents a single symbol. However, in many embodiments, each key object can represent multiple symbols that can be differentially selected using an orientation dimension.

Turning now to FIGS. 2A and 2B, a 4D virtual keyboard with 13 keys representing 39 symbols in accordance with an embodiment of the invention from two different points of view is illustrated. Using the orientation dimension, different portions of the surface of the sphere can represent different symbols, thereby further densifying the keyboard. In many embodiments, the lattice of keys is rotated based on an orientation input. In a variety of embodiments, the cursor rotates based on an orientation input. In numerous embodiments, the key objects rotate while remaining at a fixed 3D coordinate in virtual space based on an orientation input. While any division of the surface of the sphere can be used, the illustrated embodiment in FIGS. 2A and 2B utilize three different regions for illustrative purposes. In numerous embodiments, the regions extend into the sphere, e.g. as a spherical sector, a spherical cap, a spherical wedge, or any other division of a sphere as appropriate to the requirements of specific applications of embodiments of the invention. As noted above, the key objects do not need to be spheres, and alternative methods for dividing the surface area and/or volume of key objects can be used as appropriate to the requirements of specific applications of embodiments of the invention. From left to right, a comparison of a 2D standard virtual keyboard matrix-style layout implemented using systems and methods described herein, a single layer FCC lattice 3D virtual keyboard, a three layer FCC lattice 3D virtual keyboard, and a three layer FCC 4D virtual keyboard in accordance with an embodiment of the invention is illustrated in FIG. 3. The average distance between keys d (in arbitrary units) is listed above each virtual keyboard. The distance between each key within a layer in the embodiments illustrated in FIG. 3 is standardized at 2 arbitrary units for each virtual keyboard. However, the distance and size of each key can be modified to any number as appropriate to the requirements of an application of a given embodiment of the invention. As shown, the designs cut the average distance between by at least half from the conventional keyboard, and have experimentally demonstrated a doubling in typing rate, thereby increasing the clinical viability of typing technologies for those with disabilities. Systems for generating and utilizing virtual keyboards for high dimensional controllers are discussed below.

High-Dimensional Keyboard Systems

High-dimensional keyboard systems can be utilized to generate and/or display virtual keyboards for high dimensional controllers. In many embodiments, high-dimensional keyboard systems perform virtual keyboard for high dimensional controllers processes. In many embodiments, high-dimensional keyboard systems are incorporated into other computing systems, such as, but not limited to, augmented reality (AR) systems, mixed reality (MR) systems, virtual reality (VR) systems, gaming systems, smart television systems, or any other system as appropriate to the requirements of specific applications of embodiments of the invention. Turning now to FIG. 4, a high-dimensional keyboard system in accordance with an embodiment of the invention is illustrated. System 400 includes a virtual keyboard computing system 410. Virtual keyboard computing system 410 is in communication with an input device 420 and a display device 430 via a network 440. In many embodiments, the input device is a BCI. BCIs can be any BCI capable of translating brain activity into at least three dimensional cursor movement. In some embodiments, the input device is a motion tracking system, such as, but not limited to, an eye tracking and/or head tracking system. However, any number of types of input device can be used as appropriate to the requirements of specific applications of embodiments of the invention, including, but not limited to, game controllers, virtual reality style controllers, television remotes, computer mice, or any other device capable of inputting at least three dimensions of input. In numerous embodiments, more than one input devices are utilized in order to reduce noise in input signals.

In a variety of embodiments the display device is a computer monitor. However, the display device can be any form of display that is capable of displaying a rendered virtual keyboard. Indeed, the display device can be advanced 3D displays such as, but not limited to, VR displays (e.g. Oculus Rift by Facebook, VIVE by HTC, Google Cardboard by Google LLC., etc.), AR displays (e.g. HoloLens by Microsoft), and/or MR displays. In a variety of embodiments, the display device and the virtual keyboard computing system are implemented using the same hardware (e.g. a personal computer). However, any number of computing devices can be used, including, but not limited to, rack servers, smartphones, smart televisions, tablet computers, or any other computing device capable of performing virtual keyboard for high dimensional controllers processes as appropriate to the requirements of specific applications of embodiments of the invention. Further, the network can be any network, wired and/or wireless, capable of transmitting information between components. For example, the network can be, but is not limited to, the Internet, an intranet, a wide area network (WAN), a local area network (LAN) or any other network type as appropriate to the requirements of specific applications of embodiments of the invention.

Turning now to FIG. 5, a block diagram of a virtual keyboard computing system in accordance with an embodiment of the invention is illustrated. Virtual keyboard computing system 500 includes a processor 510. Processor 510 can be any type of processing unit, including but not limited to, a central processing unit, a graphics processing unit, a field programmable gate array, an application-specific integrated circuit, or any other processing module as appropriate to the requirements of specific applications of embodiments of the invention. Indeed, multiple processing modules can be used in order to provide specialized hardware for different tasks and/or to increase the speed of the system. Virtual keyboard computing system 500 further includes an input/output (IO) interface 520. IO interfaces can communicate with interface devices to obtain user input data. In many embodiments, IO interfaces provide rendering information to a display device. In a variety of embodiments, IO interfaces are used to communicate with other devices via a network.

Virtual keyboard computing system 500 further includes a memory 530. The memory can be any type of memory, either volatile or non-volatile, and can store machine-readable information. Memory 530 contains a keyboard application 532. Keyboard applications can direct processors to perform various virtual keyboard for high dimensional controllers processes. In numerous embodiments, memory 530 contains user input data. User input data can describe user inputs to the virtual keyboard for high dimensional controllers such as, but not limited to, instructions on how the cursor should be moved, whether or not a cursor should be “clicked,” and/or any other input information as appropriate to the requirements of specific applications of embodiments of the invention. In numerous embodiments, user input data is brain signal data. Brain signal data can include brain signals recorded from a BCI, and/or machine interpretable instructions based on recorded brain signals (e.g. “move the cursor to the right”). In various embodiments, memory 530 stores keyboard preference data 536. Keyboard preference data can include any user preferences and settings, including, but not limited to, the preferred distance between each sphere, different symbol assignments, different keyboard layouts, language preferences describing a preferred language, color preferences describing which colors should be used in rendering the virtual keyboard, click preferences indicating how key selection should be confirmed, and/or any other preference as appropriate to the requirements of specific applications of embodiments of the invention.

As noted above, virtual keyboard computing systems can be implemented using any computing system capable of performing virtual keyboard for high dimensional controllers processes. Virtual keyboard for high dimensional controllers processes are described below.

Processes for Generating Virtual Keyboards for High Dimensional Controllers

Processes for generating user interfaces that incorporate virtual keyboards for high dimensional controllers typically involve generating a display incorporating a rendering of a virtual keyboard for high dimensional controllers and making observations of the user to determine movement of and selections made by a cursor and/or other pointer. Virtual keyboards for high dimensional controllers can be visually provided to a user and interacted with through virtual keyboard for high dimensional controllers systems in a manner similar to that described above. Turning now to FIG. 6, a process for generating and interacting with a virtual keyboard for high dimensional controllers in accordance with an embodiment of the invention is illustrated.

In many embodiments, process 600 includes obtaining (610) keyboard preference data. Keyboard preference data can be obtained from a user interface device, and can be used to determine how the virtual keyboard for high dimensional controllers should be rendered, the layout of the keys, language, the labeling of the keys, display features, how the virtual keyboard is interfaced with, and/or any other user preference as appropriate to the requirements of specific applications of embodiments of the invention. In many embodiments, display features are the size of 3D key objects, font size, key colorings, key shapes, or any other cosmetic aspect of the virtual keyboard as appropriate to the requirements of specific applications of embodiments of the invention.

Process 600 further includes displaying (620) the virtual keyboard for high dimensional controllers on a display device and obtaining (630) user input data. The process 600 further includes moving (640) a cursor through the virtual keyboard based on the user input data, and selecting (650) a symbol via a key based on the location of the cursor in the keyboard. In many embodiments, the movement of the cursor is in three dimensions. However, in many embodiments, the movement of the cursor is in four dimensions (x, y, z, and orientation). In numerous embodiments, the cursor is moved through the virtual keyboard by moving the keys themselves relative to a fixed cursor location.

In a variety of embodiments, the cursor can be moved in a two dimensional active layer (i.e. in one plane of the lattice), and select targets only in the active layer. Using a 3rd dimension of control, the active layer can be switched. In many embodiments, this is done by highlighting the active layer or by bring the active layer to the front. In other words, the layers can be “pushed” or “pulled” to move between them. Using such a configuration, instead of moving the cursor visually in depth, the visualization itself changes and it appears as if the keyboard is ‘moving’ or changing. Visualization effects can be applied to clarify transitions. For example, all key objects can be displayed in half transparent gray, and the layer in which the cursor can be colored in a different color (e.g. blue). When the user dwells on a key object from the active layer, the key object's color can change from blue to a third color (e.g. red). However, any number of colors or visualization effects can be used as appropriate to the requirements of an application of a given embodiment of the invention.

In a variety of embodiments, selection of a key can be confirmed (660) by a secondary action. For example, a selection can be confirmed by dwelling on the selected key for a set period of time, inputting a selection confirmation via the input device, and/or any other confirmation method as appropriate to the requirements of specific applications of embodiments of the invention. If text entry is not complete (670), the cursor can be moved and a new symbol can be selected.

In many embodiments, key labeling and/or key arrangements or size can be dynamically reconfigured in response to key selections. For example, keys adjacent to the selected key can be relabeled to indicate symbols that are most likely to be required next via predictive text algorithms and/or other natural language processing methods. Further, symbols are not restricted to single letters, but can also represent strings of letters, including, but not limited to, common string of letters, common prefixes, common suffixes, words, phrases, or any other string as appropriate to the requirements of specific applications of embodiments of the invention. In this way, the average typing speed of the individual can be accelerated.

Although specific systems and methods for generating and using virtual keyboards for high dimensional controllers are discussed above, many different methods can be implemented in accordance with many different embodiments of the invention. It is therefore to be understood that the present invention may be practiced in ways other than specifically described, without departing from the scope and spirit of the present invention. Thus, embodiments of the present invention should be considered in all respects as illustrative and not restrictive. Accordingly, the scope of the invention should be determined not by the embodiments illustrated, but by the appended claims and their equivalents. 

What is claimed is:
 1. A virtual keyboard system, comprising: a processor; and a memory, comprising a virtual keyboard application, where the virtual keyboard application directs the processor to: display a plurality of 3D keys in a virtual environment, where: each 3D key represents at least one symbol via a display device; and the plurality of 3D keys are arranged in a face centered cubic lattice structure; display a cursor in the virtual environment, where the cursor is movable in at least three dimensions via the display device; obtain a user input data from a brain-computer interface, where the user input data describes brain activity; move the cursor to a 3D key in the plurality of 3D keys based on the user input data; and record the at least one symbol represented by the 3D key.
 2. The virtual keyboard system of claim 1, wherein at least one 3D key in the plurality of 3D keys is segmented into a plurality of regions, and each region represents at least one symbol.
 3. The virtual keyboard system of claim 2, wherein the virtual keyboard application further directs the processor to rotate the cursor based on the user input data.
 4. The virtual keyboard system of claim 2, wherein the virtual keyboard application further directs the processor to rotate the plurality of 3D keys around a fixed point based on the user input data.
 5. The virtual keyboard system of claim 2, wherein the virtual keyboard application further directs the processor to rotate each key in the plurality of 3D keys around a center point of each respective key based on the user input data.
 6. The virtual keyboard system of claim 1, wherein the virtual keyboard application further directed to move the cursor based on input from a motion tracking system.
 7. The virtual keyboard system of claim 1, wherein the display device displays a 2D representation of the virtual environment from at least one given viewpoint.
 8. The virtual keyboard system of claim 1, wherein each 3D key is a sphere.
 9. A method for typing using a virtual keyboard, comprising: displaying a plurality of 3D keys in a virtual environment via a display device, where: each 3D key object represents at least one symbol; the plurality of 3D keys are arranged in a face centered cubic lattice structure; displaying a cursor in the virtual environment via the display device, where the cursor is movable in at least three dimensions; obtaining user input data from a brain-computer interface, where the user input data describes brain activity; moving the cursor to a 3D key in the plurality of 3D key based on the user input data; and recording the at least one symbol represented by the 3D key.
 10. The method for typing using a virtual keyboard of claim 9, wherein at least one 3D key in the plurality of 3D key objects is segmented into a plurality of regions, and each region represents at least one symbol.
 11. The method for typing using a virtual keyboard of claim 10, further comprising rotating the cursor based on the user input data.
 12. The method for typing using a virtual keyboard of claim 10, further comprising rotating the plurality of 3D keys around a fixed point based on the user input data.
 13. The method for typing using a virtual keyboard of claim 10, further comprising rotating each key in the plurality of 3D keys around a center point of each respective key based on the user input data.
 14. The method for typing using a virtual keyboard of claim 9, further comprising moving the cursor based on input from a motion tracking system.
 15. The method for typing using a virtual keyboard of claim 9, wherein the display device displays a 2D representation of the virtual environment from at least one given.
 16. The method for typing using a virtual keyboard of claim 9, wherein each 3D key is a sphere. 